import estoque.model.*;
import estoque.view.*;
import java.util.ArrayList;
import java.util.Scanner;
import javax.swing.*;


public class Controller {
      Scanner ler = new Scanner(System.in);

   public static int cadastrodeItem(String _item, String pv) {
       if ( nulo(_item) == 0 || nulo(pv) == 0) {
          preenchaDados();
          return 0;  }
       for( Item x : JFControle.itens) {
          if(_item.equals(x.getItem())) {
              existeCadastro();
              return 0; }
      }
      JFControle.itens.add(new Item(_item, 0, Float.parseFloat(pv)));
      cadastrado();
      return 1;
  }
            
  public static int cadastroCliente(String _nome, String _end, String _tel){
     if (nulo(_nome) == 0 || nulo(_end) == 0 || nulo(_tel) == 0){
         preenchaDados();
         return 0;   }
     for(Cliente x : JFControle.clientes) {
        if(_nome.equals(x.getNome())) {
             existeCadastro();
             return 0; }
     }
     JFControle.clientes.add(new Cliente(_nome, _end,_tel));
     cadastrado();
     return 1;
  }
  
  public static int cadastroCompra(String _item, String _qtd, String _pt){
     if (nulo(_item)==0 || nulo(_qtd)==0 || nulo(_pt)==0 || _qtd.equals("0") ){
          preenchaDados();
          return 2;
     }
    // busca item cadastrado e aumenta estoque
    for(Item x : JFControle.itens){
       if(_item.equals(x.getItem()))
            x.setEstoque(x.getEstoque() + Integer.parseInt(_qtd));
    }       
    // acha objeto desse item caso já exista
    for(Compra y : JFControle.compras){
       if(_item.equals(y.getItem()))  {
              // aumenta qtd comprada e preço total
              y.setQuantidade2(y.getQuantidade2() + Integer.parseInt(_qtd));
              y.setPrecoTotal(y.getPrecoTotal()+ Float.parseFloat(_pt));
              return compraCadastrada();
       }   
    }
     // não existe o objeto desse item, cria ele com os atributos
     JFControle.compras.add(new Compra(_item,Integer.parseInt(_qtd),Float.parseFloat(_pt)));
     return compraCadastrada();
  }
  
  public static int CadastroVenda(String item, String cliente, String qtd){
      int cont2=0,cont3=0;
      float pt;
      if ( nulo(item)==0 || nulo(qtd)==0 || qtd.equals("0") ){
          preenchaDados();
          return 0;
      } 
      for(Item x : JFControle.itens){
          //verifica se item tem estoque
          if(item.equals(x.getItem()) && x.getEstoque()>= Integer.parseInt(qtd)) {
                cont3=1;
                // diminui estoque do item
                x.setEstoque(x.getEstoque() - Integer.parseInt(qtd));
                
                pt = Integer.parseInt(qtd) * x.getPreco_venda();
                //verifica se existe no array vendas desse cliente
                for(Venda z : JFControle.vendas){
                      // existindo add o item comprado nele
                      if(cliente.equals(z.getCliente())){               
                          z.itens_vendidos.add(new Item(item, Integer.parseInt(qtd), pt));
                          cont2=1;
                     }  
                }
                // não existindo cria ele com o primeiro item
                if (cont2 == 0) JFControle.vendas.add(new Venda( cliente, Integer.parseInt(qtd), item, pt));
               return 1;
           }
     }
     // Item com estoque menor, operação não feita
     JOptionPane.showMessageDialog(null,"Quantidade desejada maior que estoque.");
     return 0;  
 }  
  
   public static void graficoItem(JPanel jPanel) {
       CriaGrafico.CriaGrafico(jPanel);
   }
  
   public static void graficoCliente(JPanel jPanel2){
       CriaGrafico.CriaGrafico2(jPanel2);
   }
  
  public static int nulo(String v){
     if(v.equals("")) return 0; 
     return 1; 
  }
  
  public static void preenchaDados(){
     JOptionPane.showMessageDialog(null,"Preencha corretamente todos dados.");
  }
  
  public static void existeCadastro(){
    JOptionPane.showMessageDialog(null,"Já existe cadastro."); 
  }
  
  public static void cadastrado(){
    JOptionPane.showMessageDialog(null,"Cadastrado com sucesso."); 
  }
  
  public static int compraCadastrada(){
     return JOptionPane.showConfirmDialog(null, "Compra Cadastrada.\n Deseja cadastrar compra de outro item ?");
  }
 
}
